package org.example.commonapi.domain.onlineCode;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import javax.validation.constraints.NotNull;
import java.util.List;

@Data
@Document(collection = "code_topic")
@AllArgsConstructor
@NoArgsConstructor
public class CodeTopic {

    /**
     * mongo主健
     */
    private String id;
    /**
     * 题目id
     */
    @Field("code_id")
    private Integer codeId;
    /**
     * 题目标题
     */
    @NotNull(message = "标题不能为空")
    private String title;
    /**
     * 标签
     */
    @NotNull(message = "标签不能为空")
    private List<String> tags;
    /**
     * 难度系数 1-5⭐
     */
    @NotNull(message = "难度不能为空")
    private Integer difficulty;
    /**
     * 难度名称 1简单、2-3中等、4-5困难
     */
    @Field("difficulty_name")
    private String difficultyName;
    /**
     * 问题描述
     */
    @NotNull(message = "描述不能为空")
    private String description;
    /**
     * 注释
     */
    private String note;
    /**
     * 创建时间
     */
    @Field("create_time")
    @JsonIgnore
    private String createTime;
    /**
     * 更新时间
     */
    @Field("update_time")
    @JsonIgnore
    private String updateTime;
    /**
     * 创建人
     */
    @Field("create_by")
    @JsonIgnore
    private String createBy;
    /**
     * 更新人
     */
    @Field("update_by")
    @JsonIgnore
    private String updateBy;

    /**
     * 是否禁用 0未禁用 1已禁用
     */
    @Field("is_delete")
    private Integer isBan;

    /**
     * 题目是否创建完成 false 未创建 true 已创建
     */
    @Field("is_create")
    private Boolean isCreated;

    /**
     * 提交次数
     */
    @Field("commit_num")
    private Integer commitNum;

    /**
     * 通过次数
     */
    @Field("pass_num")
    private Integer passNum;

    /**
     * 时间限制
     */
    @Field("time_limit")
    private String  timeLimit;

    /**
     * 内存限制
     */
    @Field("memory_limit")
    private String  memoryLimit;

}